package com.sky.service;

import com.sky.dto.DataOverViewQueryDTO;
import com.sky.vo.OrderReportVO;
import com.sky.vo.SalesTop10ReportVO;
import com.sky.vo.TurnoverReportVO;
import com.sky.vo.UserReportVO;

import javax.servlet.http.HttpServletResponse;

public interface ReportService {
    /**
     * 营业额统计
     * @param dataOverViewQueryDTO 包含起始日期到结束日期的DTO
     * @return 统计了相关日期营业额的VO
     */
    TurnoverReportVO turnoverStatistics(DataOverViewQueryDTO dataOverViewQueryDTO);

    /**
     * 用户数量统计
     * @param dataOverViewQueryDTO 包含起始日期和结束日期的DTO
     * @return 包含日期列表，新增用户数列表，总用户量列表的VO
     */
    UserReportVO userStatistics(DataOverViewQueryDTO dataOverViewQueryDTO);

    /**
     * 订单统计
     * @param dataOverViewQueryDTO 包含起始日期和结束日期的DTO
     * @return 包含日期列表，每日订单数量，每日有效订单数量，订单总量，有效订单总量，订单完成率的VO
     */
    OrderReportVO orderStatistics(DataOverViewQueryDTO dataOverViewQueryDTO);

    /**
     * 前十商品销量统计
     * @param dataOverViewQueryDTO 包含起始日期和结束日期的DTO
     * @return 包含前十商品名称列表和商品对应销量列表的VO
     */
    SalesTop10ReportVO top10(DataOverViewQueryDTO dataOverViewQueryDTO);

    /**
     * 导出运营数据报表
     * @param response 原生Http响应对象，通过response获取对响应体的输出流，通过输出流写出文件
     */
    void export(HttpServletResponse response);
}
